package com.cc.guavaeventbusdemo;

import com.cc.guavaeventbusdemo.component.AlertNotifier;
import com.cc.guavaeventbusdemo.component.DatabaseUpdater;
import com.cc.guavaeventbusdemo.component.MedicalLogger;
import com.cc.guavaeventbusdemo.domain.PatientAdmissionEvent;
import com.google.common.eventbus.EventBus;

public class HospitalSystem {
    public static void main(String[] args) {
        // 创建事件总线
        EventBus eventBus = new EventBus("医疗事件总线");


        // 注册医疗订阅者
        eventBus.register(new MedicalLogger());
        eventBus.register(new AlertNotifier());
        eventBus.register(new DatabaseUpdater());

        // 模拟患者入院事件
        System.out.println("=== 发布患者入院事件 开始===");
        eventBus.post(new PatientAdmissionEvent("P12345", "急诊科"));
        System.out.println("=== 发布患者入院事件 完毕===");


//        // 创建带线程池的异步事件总线
//        AsyncEventBus asyncBus = new AsyncEventBus(Executors.newFixedThreadPool(3));
//        // 注册医疗订阅者
//        asyncBus.register(new MedicalLogger());
//        asyncBus.register(new AlertNotifier());
//        asyncBus.register(new DatabaseUpdater());
//        // 模拟患者入院事件
//        System.out.println("=== 发布患者入院事件 开始===");
//        asyncBus.post(new PatientAdmissionEvent("P12345", "急诊科"));
//        System.out.println("=== 发布患者入院事件 完毕===");
    }
}
